草庐IT

ruby-on-rails - 有人可以向我解释 class << self 吗?

我是第一次接触Rails编程,在查看我下载的一些库的代码时,我偶尔会注意到代码:class我尝试在网上搜索解释,但是 最佳答案 在ruby中,class打开foo引用的对象的单例类.在Ruby中,每个对象都有一个与之关联的单例类,它只有一个实例。这个单例类包含特定于对象的行为,即单例方法。所以,class打开self的单例类.到底是什么self是,当然取决于您所处的环境。例如,在模块或类定义主体中,它是模块或类本身。如果您使用单例类的全部目的是定义单例方法,那么实际上有一个快捷方式:deffoo.bar.下面是一个示例,说明如何使用

ruby-on-rails - Ruby '.find' 方法只返回第一次出现

我有如下模型:用户has_many目标,目标has_many任务,任务has_manyday_tasks。我正在尝试编写一种方法来查找所有day_tasks属于某个用户有:target_date==Date.today(target_date是day_tasks表中的一列)。我想将结果放入@day_tasks数组。我的代码:@user=current_user@day_tasks=DayTask.find{|x|x.task.goal.user==@user&&x.target_date==Date.today}此代码仅返回符合这些条件的第一条记录。我也尝试过在大括号中使用DayTas

ruby - Foo < Ruby 中的 Bar

我最近发现您可以检测一个类/模块是否包含另一个类/模块。例如Array是Enumerable所以你可以这样做ArrayString但是不可枚举String这里究竟发生了什么?这种语法在ruby​​中如何工作? 最佳答案 以下是获取类的祖先链的方法:>>Array.ancestors=>[Array,Enumerable,Object,Kernel,BasicObject]如果一个类是祖先链中另一个类的“左”,则>>Arraytrue>>Arraytrue如果一个类不是“左”类或祖先链中的另一个类,则>>Enumerablefalse

ruby - 如何在不转换为不同编码的情况下替换 Ruby 中的 UTF-8 错误?

为了将字符串转换为UTF-8并替换所有编码错误,您可以这样做:str.encode('utf-8',:invalid=>:replace)唯一的问题是如果str已经是UTF-8则它不起作用,在这种情况下仍然存在任何错误:irb>x="foo\x92bar".encode('utf-8',:invalid=>:replace)=>"foo\x92bar"irb>x.valid_encoding?=>false引用RubyDocs:Pleasenotethatconversionfromanencodingenctothesameencodingencisano-op,i.e.therec

Ruby:Dir.glob 不返回任何文件

我正在尝试将文件从一个文件夹复制到另一个文件夹,然后将所有复制的文件的名称记录到一个日志文件中。这两个文件夹都在同一目录中,我通过命令行采用该路径。在我目前的程序中,这是通过argument3=ARGV[2]+"\\"成功成为“c:\user\alexander\desktop\”。然后我将桌面上的文件复制到桌面上已有的文件夹中system"copy#{argument3}*.*#{argument3}TestFolder"这也成功完成了我从cmd输出和检查文件夹本身验证的结果。最后,我尝试将文件名保存到路径为“c:\user\alexander\desktop\log.txt”的日志

ruby - 无法安装 ruby​​ gems - zlib 错误

我正在尝试安装一些RubyGems,以便在我收到Twitter消息时可以使用Ruby通知我。然而,在执行了gemupdate--system之后,我现在每次尝试执行geminstall时都会收到zlib错误。下面是我在尝试安装ruby​​gems时得到的控制台输出。(以及gem环境的输出)。C:\data\ruby>geminstalltwitterERROR:Whileexecutinggem...(Zlib::BufError)buffererrorC:\data\ruby>gemupdate--systemUpdatingRubyGemsERROR:Whileexecutingg

ruby-on-rails - 如何使用 Test::Unit 跳过某些测试

在我的一个项目中,我需要与多个后端系统协作。其中一些缺少文档,部分原因是我有一些测试代码与一些测试服务器交互,只是为了查看一切都按预期工作。但是,访问这些服务器非常慢,因此我不想在每次运行测试套件时都运行这些测试。我的问题是如何处理您想跳过某些测试的情况。目前我使用一个环境变量“BACKEND_TEST”和一个条件语句来检查是否为我想跳过的每个测试设置了变量。但有时我想跳过测试文件中的所有测试,而不必在每个测试的开头添加额外的行。需要与测试服务器交互的测试并不多,因为我在其他情况下使用flexmock。但是,您不能mock自己远离现实。从这个问题的标题可以看出,我使用的是Test::U

ruby-on-rails - 无法运行 rails 命令。你的 Ruby 版本是 2.2.1,但是你的 Gemfile 指定了 2.1.4

我无法运行服务器railss或无法制作Controller等。我该怎么办?终端显示以下错误:YourRubyversionis2.2.1,butyourGemfilespecified2.1.4 最佳答案 运行ruby-v然后你会看到你已经安装了ruby​​2.2.1,但是你的Gemfile中的第一行指定使用ruby2.1.4。更改Gemfile中的第一行以指定ruby2.2.1或安装ruby2.1.4如果你想使用以前的版本ruby​​2.1.4。然后首先使用rvmlist命令检查它是否已经安装。如果它在那里那么你需要运行rvmus

ruby-on-rails - Rails ActiveRecord Shovel (<<) 运算符

所以我的应用程序中有代码附加到与“classBlogPost而且它似乎有效。我从来没有真正质疑过它或想知道它何时调用“保存”(我想我从来没有深刻理解何时开始调用“保存”)。但是,似乎after_save在我的add_comment中没有激活评论Hook功能,提示我问:如何运算符(operator)在activerecord中工作,我在哪里可以阅读更多相关信息?谢谢 最佳答案 当您使用shovel运算符(),Rails会自动保存关联的对象。所以,当你这样做时:self.comments@new_comment被添加到comments收

ruby - 无法将 nil 转换为字符串

我不了解Ruby,但我的应用程序遇到了这个问题。有人可以帮助我吗?ActionView::TemplateError(can'tconvertnilintoString)online#74::5:Estadooriginal:6:'\1')%>7:8:url_for(opinion),:method=>:put,:with=>'"opinion[opinion]=POSITIVE"'},:class=>:positive)%>9:url_for(opinion),:method=>:put,:with=>'"opinion[opinion]=OBJECTIVE"'},:class=>: